package org.hfy.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.hfy.dto.warehouse.InboundQueryDTO;
import org.hfy.dto.warehouse.OutboundCreateDTO;
import org.hfy.entity.Inventory;
import org.hfy.entity.Outbound;

/**
 * 出库管理服务接口
 * 
 * @author hfy
 * @version 1.0
 */
public interface OutboundService extends IService<Outbound> {

    /**
     * 分页查询可出库的库存列表
     * 
     * @param queryDTO 查询条件
     * @return 可出库的库存列表
     */
    IPage<Inventory> getAvailableStockPage(InboundQueryDTO queryDTO);

    /**
     * 分页查询出库记录
     * 
     * @param queryDTO 查询条件
     * @return 出库记录列表
     */
    IPage<Outbound> getOutboundRecordsPage(InboundQueryDTO queryDTO);

    /**
     * 创建出库单
     * 
     * @param createDTO 出库创建DTO
     * @return 创建的出库单
     */
    Outbound createOutbound(OutboundCreateDTO createDTO);

    /**
     * 根据入库单ID获取已出库总数
     * 
     * @param inboundId 入库单ID
     * @return 已出库总数
     */
    Integer getTotalOutboundQuantityByInboundId(Long inboundId);
} 